package com.vr.xuecheng.content.service;

import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vr.xuecheng.base.response.Result;
import com.vr.xuecheng.content.model.dto.AddOrUpdateTeachPlanParamsDTO;
import com.vr.xuecheng.content.model.dto.TeachPlanMediaDTO;
import com.vr.xuecheng.content.model.entity.TeachPlan;

import java.util.List;

/**
 * <p>
 * 课程计划 服务类
 * </p>
 *
 * @author hsh
 * @since 2025-02-20
 */
public interface ITeachPlanService extends IService<TeachPlan> {

    /**
     * @param courseId 课程id
     * @return {@code List<Tree<Long>> } 树形结构结果
     * 根据课程id获取课程计划树形结构
     */
    List<Tree<Long>> getTreeNodesById(Long courseId);

    /**
     * @param req 新增或更新参数
     * @return {@code Result<String> } 结果
     */
    Result<String> addOrUpdateTeachPlan(AddOrUpdateTeachPlanParamsDTO req);

    /**
     * @param id 课程计划id
     * @return {@code Result<String> } 结果
     * 上移课程计划
     */
    Result<String> moveUp(Long id);
    /**
     * @param id 课程计划id
     * @return {@code String } 结果
     * 下移课程计划
     */
    Result<String> moveDown(Long id);

    /**
     * @param req 关联媒资参数
     * @return boolean 是否关联成功
     */
    boolean relevanceMedia(TeachPlanMediaDTO req);
}
